package com.song.EMS.service.impl;

import com.song.EMS.bean.User;
import com.song.EMS.dao.impl.UserDaoImpl;
import com.song.EMS.service.UserService;
import com.song.EMS.utils.DateFormatUtil;

import java.util.List;

public class UserServiceImpl implements UserService {
    private UserDaoImpl userDao = new UserDaoImpl();

    /**
     * 获取用户控制台数据
     *
     * @return 数据集合
     */
    @Override
    public List userConsole() {
        return userDao.userConsole();
    }

    /**
     * 用户的新增
     *
     * @param user 用户注册信息
     * @return true 注册成功
     */
    @Override
    public Integer insertUser(User user) {
        //用户名是否重复
        if (selectByPhone(null, user.getUserName()) != null) {
            return 0;
        }
        //用户手机号是否重复
        if (selectByPhone(user.getUserPhone(), null) != null) {
            return -1;
        }
        return userDao.insertUser(user);
    }

    /**
     * 通过手机号查询用户
     *
     * @param userPhone 用户的手机号
     * @return 查询的用户对象
     */
    @Override
    public User selectByPhone(String userPhone, String userName) {
        return userDao.selectByPhone(userPhone, userName);
    }

    /**
     * 查询所有用户信息
     *
     * @param limit     是否分页查询 true 分页   false  不分页
     * @param pageIndex sql语句查询的起始索引
     * @param pageSize  一次查询的数量
     * @return 所有用户信息集合
     */
    @Override
    public List<User> selectUsers(Boolean limit, Integer pageIndex, Integer pageSize) {
        List<User> users = userDao.selectUsers(limit, pageIndex, pageSize);
        for (User user : users) {
            user.setGender(user.getUserGender() == 0?"女":"男");
            user.setLoginTime1(DateFormatUtil.getDate(user.getLoginTime()));
            user.setRegisterTime1(DateFormatUtil.getDate(user.getRegisterTime()));
        }
        return users;
    }

    /**
     * 用户信息的修改更新
     *
     * @param user 修改后的用户信息
     * @return 1成功  0用户名已被用  -1手机号码已被注册  -2失败
     */
    @Override
    public Integer updateUser(User user) {
        //用户名是否重复
        if (selectByPhone(null, user.getUserName()) != null && !selectByPhone(null, user.getUserName()).getUserId().equals(user.getUserId())) {
            return 0;
        }
        //用户手机号是否重复
        if (selectByPhone(user.getUserPhone(), null) != null && !selectByPhone(user.getUserPhone(), null).getUserId().equals(user.getUserId())) {
            return -1;
        }
        return userDao.updateUser(user);
    }

    /**
     * 通过手机号修改其登录记录
     *
     * @param userPhone 用户手机号
     */
    @Override
    public void updateLoginTime(String userPhone) {
        userDao.updateLoginTime(userPhone);
    }

    /**
     * 通过用户ID删除用户
     *
     * @param userId 用户的ID
     * @return true 删除成功  false 删除失败
     */
    @Override
    public Boolean deleteUser(Integer userId) {
        return userDao.deleteUser(userId);
    }
}
